﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
//	int a = 10; // 在内存中开辟一块空间
//	int* p = &a; // 这里我们对变量a，取出它的地址，可以使用&操作符。
//	//a变量占用4个字节的空间，这里是将a的4个字节的第一个字节的地址存放在p变量
//	//中，p就是一个之指针变量。
//	return 0;
//}

//int main()
//{
//	//int num = 0;
//	//int* p = &num;
//	char* pc = NULL;
//	int* pi = NULL;
//	short* ps = NULL;
//	long* pl = NULL;
//	float* pf = NULL;
//	double* pd = NULL;
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int n = 0x11223344;
//	char* pc = (char*)&n;
//	int* pi = &n;
//	*pc = 0; 
//	*pi = 0; 
//	
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int* p; // 局部变量指针未初始化，默认为随机值
//	*p = 20;
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (i = 0; i <= 11; i++)
//	{
//		//当指针指向的范围超出数组arr的范围时，p就是野指针
//		*(p++) = i;
//	}
//
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (i = 1; i <= 11; i++)
//	{
//		*(p++) = i;
//	}
//
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int* p = NULL;
//	//....
//	int a = 10;
//	p = &a;
//	if (p != NULL)
//	{
//		*p = 20;
//	}
//
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int n = 10;
//	char* pc = (char*)&n;
//	int* pi = &n;
//
//	printf("%p\n", &n);
//	printf("%p\n", pc + 1);
//	printf("%p\n", pi);
//	printf("%p\n", pi + 1);
//
//	return 0;
//}

//#define N_VALUES 5
//int main()
//{
//	float values[5];
//	float* vp;
//	for (vp = &values[0]; vp < &values[5];)
//	{
//		*vp++ = 0;
//	}
//
//	return 0;
//}

//int main()
//{
//	int a[10] = { 0 };
//	printf("%p\n", a);
//	printf("%p ", &a);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
//	int* p = arr; // 指针存放数组首元素的地址
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("&arr[%d] = %p <=> p+%d = %p\n", i, &arr[i], i, p + i);
//	}
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
//	int* p = arr; //指针存放数组首元素的地址
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}